package lxj.ch05;

/**
 * 二叉树的遍历
 */
public class DebugBiTree {

    public static BiTree createBiTree() {
        BiTreeNode d = new BiTreeNode('D');
        BiTreeNode g = new BiTreeNode('G');
        BiTreeNode h = new BiTreeNode('H');
        BiTreeNode e = new BiTreeNode('E', g, null);
        BiTreeNode b = new BiTreeNode('B', d, e);
        BiTreeNode f = new BiTreeNode('F', null, h);
        BiTreeNode c = new BiTreeNode('C', f, null);
        BiTreeNode a = new BiTreeNode('A', b, c);
        return new BiTree(a);
    }

    public static void main(String[] args) {
        BiTree biTree = DebugBiTree.createBiTree();
        BiTreeNode root = biTree.getRoot();// 取得树的根结点

        // 调试先根遍历
        System.out.print("递归先根遍历序列为  ");
        biTree.preRootTraverse(root);
        System.out.println(); // 输出换行
        System.out.print("非递归先根遍历序列为");
        biTree.preRootTraverse2(root);
        System.out.println();
        System.out.print("非递归先根遍历序列为");
        biTree.preRootTraverse3(root);
        System.out.println();
        System.out.println();



        // 调试中根遍历
        System.out.print("递归中根遍历序列为");
        biTree.inRootTraverse(root);
        System.out.println();
        System.out.print("非递归中根遍历序列为");
        biTree.inRootTraverse2(root);
        System.out.println();
        System.out.println();


        // 调试后根遍历
        System.out.print("递归后根遍历序列为");
        biTree.postRootTraverse(root);
        System.out.println();
        System.out.print("非递归后根遍历序列为");
        biTree.postRootTraverse();
        System.out.println();
        System.out.print("非递归后根遍历序列为");
        biTree.postRootTraverse2(root);
        System.out.println();
        System.out.println();

        // 调试层次遍历
        System.out.print("层次遍历序列为");
        biTree.levelTraverse();
        System.out.println();
    }
}

